#include <iostream>
#include <vector>
using namespace std;

int main() 
{
    //预处理前缀和矩阵
    int n = 0, m = 0, q = 0;
    cin >> n >> m >> q;
    vector<vector<int>> arr(n+1, vector<int>(m+1));
    for(int i = 1; i <= n; i++)
        for(int j = 1; j <= m; j++)
            cin >> arr[i][j];
    vector<vector<long long>> dp(n+1, vector<long long>(m+1));//防溢出
    for(int i = 1; i <= n; i++)
        for(int j = 1; j <= m; j++)
        dp[i][j] = dp[i-1][j] + dp[i][j-1] + arr[i][j] - dp[i-1][j-1];

    //使用前缀和矩阵
    int x1 = 0, y1 = 0, x2 = 0, y2 = 0;
    while(q--)
    {
        cin >> x1 >> y1 >> x2 >> y2;
        cout << dp[x2][y2] - dp[x1-1][y2] - dp[x2][y1-1] + dp[x1-1][y1-1] << endl;
    }

    return 0;
}

class Solution {
public:
    int pivotIndex(vector<int>& nums) 
    {
        //统计前缀和与后缀和
        int n = nums.size();
        vector<int> f(n),g(n);//f统计前缀和，g统计后缀和

        //边界细节f[0] = 0,g[n-1] = 0
        for(int i = 1; i < n; i++)
        {
            f[i] = f[i-1] + nums[i-1];
        }
        for(int i = n - 2; i >= 0 ; i--)
        {
            g[i] = g[i+1] + nums[i+1];
        }
        //使用
        for(int i = 0; i < n; i++)
        {
            if(g[i] == f[i])
                return i;
        }

        return -1;

    }
};

class Solution {
public:
    vector<int> productExceptSelf(vector<int>& nums) 
    {
        //预处理
        int n = nums.size();
        vector<int> f(n),g(n),ret(n);//f表示前缀积，g表示后缀积,ret表示结果
        //处理边界
        f[0] = 1;
        g[n-1] = 1;

        for(int i = 1; i < n; i++)
            f[i] = f[i-1] * nums[i-1];
        for(int i = n - 2; i >= 0; i--)
            g[i] = g[i+1] * nums[i+1];

        //使用前缀积数组和后缀积数组
        for(int i = 0; i < n; ++i)
        {
            ret[i] = f[i]*g[i];
        }

        return ret;
    }
};
